package cn.jsj.dao;

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

import cn.jsj.pojo.TblInvoiceManage;

/**
 * 律师提成发票处理类
 * @author LI
 *
 */

public class TblInvoiceManageDAO  {

	/**
	 * 查看所有发票信息条数
	 * @return：发票信息条数
	 */
	public int getAllInvoiceInfoNumb(){
		// 取得session对象
		org.hibernate.Session session = HBUtils.getSession();
		// 新建事务对象
		org.hibernate.Transaction tx = session.beginTransaction();
		// 开始事务
		tx.begin();
		// session.iterate("select count(*) from TblInvoiceManage").next()).intValue()
		String hql="select count(*) from TblInvoiceManage";
	    List result=session.createQuery(hql)
		.list();
		// 提交事务
		tx.commit();
		session.close();
		//获得结果的迭代器
		 ListIterator iterator = result.listIterator();
		 Long rows =(Long)iterator.next();
		 return Integer.parseInt(rows.toString());
	}

	/**
	 * 查看所有发票信息
	 * @param startNumb：从哪一条开始
	 * @param totalNumb：总共显示几条
	 * @return：发票信息队列
	 */
	public java.util.List<cn.jsj.pojo.TblInvoiceManage> getAllInvoiceInfo(int startNumb,int totalNumb){
		// 取得session对象
		org.hibernate.Session session = HBUtils.getSession();
		// 新建事务对象
		org.hibernate.Transaction tx = session.beginTransaction();
		// 开始事务
		tx.begin();
		List result=session.createCriteria(TblInvoiceManage.class)
		.addOrder(org.hibernate.criterion.Order.desc("invoiceTime"))
		.setFirstResult(startNumb)
		.setMaxResults(totalNumb)
		.list();
		// 提交事务
		tx.commit();
		session.close();
		return result;
	}

	/**
	 * 获取搜索条件下发票数
	 * @param sip：后台传往DB的发票参数对象
	 * @return：发票数
	 */
	public int getSearchInvoiceNumb(cn.jsj.bgtodb.SearchInvoiceProperty sip){

		// 取得session对象
		org.hibernate.Session session = HBUtils.getSession();
		// 新建事务对象
		org.hibernate.Transaction tx = session.beginTransaction();
		// 开始事务
		tx.begin();
		//结果队列
		List result=new LinkedList();
		//判断是否输入了合同号
		if(sip.getContractId().length()!=0){
		String hql="select count(*) from TblInvoiceManage t where t.contractNumber=?";
	    result=session.createQuery(hql)
	    .setString(0, sip.getContractId())
		.list();
		}else{
			//没有输入合同号
			String hql="select count(t.invoiceNumber) from TblInvoiceManage t,TblCaseInfo c,TblLawyer l where t.contractNumber=c.contractNumber and c.undertakeLawyer=l.lawyerId and l.lawyerName=?";
					    result=session.createQuery(hql)
					    .setString(0, sip.getUndertakeLawyer())
						.list();
		}
		// 提交事务
		tx.commit();
		session.close();
		//获得结果的迭代器
		 ListIterator iterator = result.listIterator();
		 Long rows =(Long)iterator.next();
		 //调试信息
		 cn.jsj.utils.SysLogger.PrintInfo("条数----------->"+rows);
		 return Integer.parseInt(rows.toString());
	}



	/**
	 * 获取搜索条件下发票信息
	 * @param sip：后台传往DB的发票参数对象
	 * @return：发票信息队列
	 */
	public java.util.List<cn.jsj.pojo.TblInvoiceManage>  getSearchInvoiceInfo(cn.jsj.bgtodb.SearchInvoiceProperty sip){

		// 取得session对象
		org.hibernate.Session session = HBUtils.getSession();
		// 新建事务对象
		org.hibernate.Transaction tx = session.beginTransaction();
		// 开始事务
		tx.begin();
		//结果队列
		List result=new LinkedList();
		//判断是否输入了合同号
		if(sip.getContractId().length()!=0){
		String hql="select t from TblInvoiceManage t where t.contractNumber=?";
	    result=session.createQuery(hql)
	    .setFirstResult(sip.getStartNumb())
	    .setMaxResults(sip.getTotalNumb())
	    .setString(0, sip.getContractId())
		.list();
		}else{
			//没有输入合同号
			String hql="select t from TblInvoiceManage t,TblCaseInfo c,TblLawyer l where t.contractNumber=c.contractNumber and c.undertakeLawyer=l.lawyerId and l.lawyerName=?";
					    result=session.createQuery(hql)
					     .setFirstResult(sip.getStartNumb())
					     .setMaxResults(sip.getTotalNumb())
					    .setString(0, sip.getUndertakeLawyer())
						.list();
		}
		// 提交事务
		tx.commit();
		session.close();
		 //调试信息
		 cn.jsj.utils.SysLogger.PrintInfo("条数----------->"+result.size());
		 return result;
	}

	/**
	 * 保存发票信息
	 * @param tim：发票信息对象
	 * @return：1：保存成功
	 */

	public int saveInvoiceInfo(cn.jsj.pojo.TblInvoiceManage tim){
		// 取得session对象
		org.hibernate.Session session = HBUtils.getSession();
		// 新建事务对象
		org.hibernate.Transaction tx = session.beginTransaction();
		// 开始事务
		tx.begin();
		session.save(tim);
		// 提交事务
		tx.commit();
		session.close();
		return 1;
	}


	/**
	 * 更新发票信息
	 * @param tim：发票信息对象
	 * @return：1：更新成功
	 */

	public int updateInvoiceInfo(cn.jsj.pojo.TblInvoiceManage tim){
		// 取得session对象
		org.hibernate.Session session = HBUtils.getSession();
		// 新建事务对象
		org.hibernate.Transaction tx = session.beginTransaction();
		// 开始事务
		tx.begin();
		session.update(tim);
		// 提交事务
		tx.commit();
		session.close();
		return 1;
	}













}